//该文件是对axios的二次封装，目的是：统一给所有请求加上前缀
import axios from 'axios'
// 引入nprogress
import nprogress from 'nprogress'
// //引入getUserTempId，用于获取一个临时标识
import {getUserTempId,getToken} from '@/utils/auth'

//引入nprogress的样式
import 'nprogress/nprogress.css'

const ajax = axios.create({
	baseURL:'http://39.98.123.211/api', //代表服务器地址，在vue.config.js中已配置
	timeout:20000
})

//请求拦截器
ajax.interceptors.request.use((config)=>{
	//进度条走起来
	nprogress.start()
	//若有token，则携带
	if(token) config.headers.token = token


	// 往请求头里追加一个a属性，值为1
	config.headers.userTempId = getUserTempId()
	// 尝试从localStorage中获取token
	const token = getToken()
	// 若有token，则携带
	if(token) config.headers.token = token
	// 一定要把请求的配置对象交出去
	return config
})

//响应拦截器
ajax.interceptors.response.use(
	//响应成功的回调（http状态码为2开头）
	response => {
		//进度条停止
		nprogress.done()
		//返回“纯粹的”数据
		return response.data
	},
	//响应失败的回调（http状态码不是2开头）
	error => {
		//进度条停止
		nprogress.done()
		//统一提示所有ajax响应的错误
		alert(error)
		//中断Promise链，以后程序员发请求的时候，就不用写失败的回调了
		return new Promise(()=>{})
	}
)


export default ajax